iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 10
0
自我挑戰組

Android App 初學者從零開始用Kotlin寫APP系列 第 10

<Day10>Activity 生命週期

  • 分享至 

  • xImage
  •  

使用的 Activity 要在 AndroidManifest 宣告

    <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

Activity 生命週期

https://ithelp.ithome.com.tw/upload/images/20200923/20130598pUKCNvHom6.png


 public class Activity extends ApplicationContext {
 

     protected void onCreate(Bundle savedInstanceState);
     
     protected void onStart();
     

     protected void onRestart();

     protected void onResume();

     protected void onPause();

     protected void onStop();

     protected void onDestroy();
 }
 

說明

  • onCreate()
    在第一次創建活動時調用, 下一步為onStart()。

  • onRestart()
    停止之後,再次開始之前調用,下一步為onStart()。

  • onStart()
    使用者畫面可見時調用。如果進入前台,下一步 onResume()。

  • onResume()
    開始與用戶互動時調用。位於最上層與使用者互動,下一步onPause()。

  • onPause()
    當失去前台狀態,不再可聚焦或在到停止/隱藏或破壞狀態之間的調用。 該活動仍對使用者可見,保持其視覺狀態並繼續更新UI。 此方法的實現必須非常快,因為在此方法返回之前,下一個活動將不會恢復。
    如果活動返回到最前一頁,下一步為 onResume(),如果使用者看不到該頁面,下一步為onStop()。

  • onStop()

當不再對使用者可見。 如有新的活動正在最上面開始,或者一個現有的活動正在該活動的前面,或者該活動正在被銷毀。 通常用於停止動畫和刷新UI等。如果此活動使用者可以返回,下一步為onRestart(),或者如果此活動將要消失,下一步為onDestroy()。

  • onDestroy()
    活動銷毀之前收到的最後一個通知。

動手試看看

Activity啟動時順序為
onCreate -> onStart -> onResume

Close App
onPause -> onStop -> onDestroy

Switch between Apps

onCreate -> onStart -> onResume -> onStop

Open facebook messenger
onCreate -> onStart -> onResume( 仍是onResume 沒有改變狀態)

Lock and unlock screen
onPause() ->onStop ->onRestart()-> onStart -> onResume

提醒

   override fun onDestroy() {
       //code 會執行 
       super.onDestroy()
       //code  有些 OS 寫這不會執行
   }

reference https://developer.android.com/reference/android/app/Activity


上一篇
<Day9>ConstraintLayout
下一篇
<Day11> Fragment 生命週期
系列文
Android App 初學者從零開始用Kotlin寫APP30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言